package ufc.principal;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.Vector;


public class TwoPhaseLocking {
	static Transacao t1 = new Transacao();
	static Dado dado = new Dado();
	static List<Operacao> list = new ArrayList<Operacao>();
	public static void main(String args[]) {
        Scanner s = new Scanner(System.in);
        
        System.out.println("Digite a entrada: (formato: r1(x)-w1(x)-c1)");
        while(s.nextLine()!=null){
        	String entrada = s.nextLine();
        	System.out.println("A saida correta : "+ escalonar(entrada));
        	//s = new Scanner(System.in);
        }
}

private static String escalonar(String entrada) {
		String[] operacoes = entrada.split("-");
//        Vector<Operacao> operacao = new Vector<Operacao>(); // vetor de operaes
//        Vector<Bloqueio> bloqueios = new Vector<Bloqueio>(); // vetor de bloqueios
//        Vector<Operacao> filaEspera = new Vector<Operacao>(); // vetor de operaes da fila de espera
//        Grafo grafo = new Grafo(); // esse  o WAIT-FOR-GRAPH, pra detectar deadlock
		StringBuffer saida = new StringBuffer();
		int numberTipo = 0;
		int transacao = 0;
        for (int i = 0; i < operacoes.length; i++) {
                String tipo = operacoes[i].substring(0, 1);
                transacao = Integer.parseInt(operacoes[i].substring(1, 2));
                
                String objeto = null;
                if (!tipo.equals("c")){
            	    objeto = operacoes[i].substring(3, 4);
               }
               else{
            	   objeto = null;
               }
			   dado.setValor(objeto);
				switch (tipo) {
				case "r":
					numberTipo = 0;
					break;
				case "w":
					numberTipo = 1;
					break;
				case "c":
					numberTipo = 2;
					break;
				case "a":
					numberTipo = 3;
					
					break;
				}
                Operacao op = new Operacao(numberTipo, dado);
                list.add(op);
                //operacao.add(new Operacao(tipo, dado));
                
        }
        t1.setId(transacao);
        t1.setOperacaoList(list);
        for (Operacao lista : list){  
            System.out.println ("Lista: " + lista.getOperacaoTipo() + " - ");  
        }  
        return "Ok";
	}
	public ArrayList<String> ler(String fileName){
	
	ArrayList<String> array = new ArrayList<String>();
		try{
				Scanner input = new Scanner(new File(fileName));
		while(input.hasNext())
		{
			array.add(input.nextLine());
		}
		}catch(Exception e)
		{
			System.out.println(e.getMessage());
	}
		return array;
	}
	

}
